<?php
/************************************************************************
 * 后台管理系统基础文件 后端控制器都会继承此控制
 * 可以实现一些全局的基础功能，如 : 登录检查、权限、等后台开发常用的功能 
 * @version   1.2.0
 ***********************************************************************/
class adminController extends grace{
    public function __init()
    {
        parent::__init();
        //进入页面前检查是否已经登录
        $this->checkLogin();

        //判断用户是否有权限
        $this->checkAuth();
    }

	public function index(){
		
	}

    /***
     * 登录检查
     * @param null $auth
     */
    protected function checkLogin($auth = null){
        if(empty(getSession("email"))){
            header('location:'.PG_SROOT.'login');
            pgExit();
        }
    }

    /**
     * 判断用户是否有权限
     * @param null $auth
     */
    protected function checkAuth($auth = null){
        $RoleModel = model("managerole");
        // 获取当前用户拥有的权限id
        $role_id =getSession("manager_role_id");
        // 查询该用户所拥有哪些权限
        $this->CurrentRoles = $RoleModel->getFetchByID($role_id);
        if(!$this->CurrentRoles){
            $this->request_error("对不起，您没有权限! <span style='color: red'> 代码号: 10003 </span>");
        }
        // 解析该权限对应的菜单列表
        $RoleMenu = json_decode($this->CurrentRoles['role_content']);
        // 获取当前访问的控制器和方法
        $controller = PG_C;
        $method = PG_M;
        // 通过控制器和方法名判断是否在菜单里
        $menuModel = model("menu");
        $checkMenuRes = $menuModel->getDataByControlAndMethod($controller,$method);
        // 判断该功能是否存在
        if(!$checkMenuRes){
                $this->request_error("对不起，您目前没有该功能的权限; <span style='color: red'>代码号: 10000</span>");
        }
        // 判断该功能菜单是否被禁用
        if( $checkMenuRes['status'] == 1){
            $this->request_error("对不起，该功能已被禁止使用; <span style='color: red'>代码号: 10001</span>");
        }
        // 判断当前访问的菜单是否在允许访问的权限内
        if(!in_array($checkMenuRes['mid'],$RoleMenu)){
                $this->request_error("对不起，您没有权限; <span style='color: red'>代码号: 10002</span>");
        }
        // 所有验证都通过，就不处理了，正常放行
    }

    /**
     * 判断是否为ajax请求数据，如果是ajax请求，返回json数据，非ajax请求，返回普通文本
     * @param $msg
     */
    private function request_error($msg){
        if(isAjax()){
            $this->json("$msg",'error');
        }else{
            pgExit($msg);
        }
    }



}